#ifndef OBJECT_H_
#define OBJECT_H_

#include "VertexList.h"
#include "Mouse.h"
#include "Material.h"
#include "TextureManager.h"
#include "FormMenu.h"

class Object
{
	protected:
	VertexList * vertices;
	Material * material;
	int textureIndex;
	TextureManager * textureManager;
	float textureRotation;
	
	public:
	FormMenu * propertyMenu;
	bool activeObject;	
	Object(TextureManager * textureManager, VertexList * vertices);	
	~Object();
	virtual void AddVertex(Vertex * vertex);
	virtual void AddVertexBefore(Vertex * vertex, Vertex * before);
	virtual void RemoveVertex(Vertex * vertex);
	virtual void Draw();
	virtual void TexturedDraw();
	virtual void CheckHover(Mouse * mouse);
	virtual void GetHoverGroup(Mouse * mouse, VertexList * group);
	virtual Vertex * GetHover(Mouse * mouse);
	virtual bool CheckObjectHover(Mouse * mouse);
	virtual char * GetTag();
	virtual Vector2D GetRotationPoint();
	virtual void Rotate(float theta);
	virtual void Expand(float ratio);
	virtual void CalculatePosition();
	Material * GetMaterial();
	virtual void SetMaterial(Material * material);
	virtual void RotateTexture(float theta);
	virtual VertexList * GetVertices();
	virtual void ViewProperties();
	virtual void HideProperties();
	void SetMin(int min);
	void SetMax(int max);
	virtual Object * GetParent();
	
};
#endif /*OBJECT_H_*/
